package dao;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import clases.Evento;
import clases.Tipo;

@Repository
public class DaoEventosImpl extends DaoImpl implements DaoEventos {
	@Transactional
	public List<Evento> findbydate(Date date) {
		Criteria crit = getSessionFactory().getCurrentSession().createCriteria(Evento.class);
		crit.add(Restrictions.eq("fecha", date));
		return crit.list();
	}
	@Transactional
	public List<Evento> finbytype(Tipo tipo) {
		Criteria crit = getSessionFactory().getCurrentSession().createCriteria(Evento.class);
		crit.add(Restrictions.eq("tipos", tipo));
		return crit.list();
	}
	@Transactional
	public boolean exists(Evento nuevoEvento) {
		// TODO Auto-generated method stub
		Criteria crit = getSessionFactory().getCurrentSession().createCriteria(Evento.class);
		crit.add(Restrictions.eq("fecha", nuevoEvento.getFecha()));
		crit.add(Restrictions.eq("idAu", nuevoEvento.getIdAu()));
		Evento aux = (Evento) crit.uniqueResult();
		if(aux != null){
			return true;
		}else{
			return false;
		}
	}
	@Transactional
	public List<Evento> findbyid(Long id) {
		// TODO Auto-generated method stub
		Criteria crit = getSessionFactory().getCurrentSession().createCriteria(Evento.class);
		crit.add(Restrictions.gt("id", id));
		Date fecha_actual = new Date();
		crit.add(Restrictions.gt("fecha", fecha_actual));
		return crit.list();
	}
	@Transactional
	public List<Evento> findPending() {
		// TODO Auto-generated method stub
		Criteria crit = getSessionFactory().getCurrentSession().createCriteria(Evento.class);
		crit.add(Restrictions.or(Restrictions.isNull("descripcion"), Restrictions.isNull("coordenadas")));
		Date fecha_actual = new Date();
//		crit.add(Restrictions.gt("fecha", fecha_actual));
		crit.addOrder(Order.asc("fecha"));
		return crit.list();
	}


}  